function in_array(needle, haystack, argStrict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // +   input by: Billy
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true
    // *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false
    var key = '',
            strict = !!argStrict;

    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }

    return false;
}

jQuery(document).ready(function() {
    jQuery('#btn-select-all').click(function() {
        var parent = jQuery('#users-permissions');
        var ch = parent.find('input[type=checkbox]');

        ch.each(function() {
            jQuery(this).attr('checked', true);
            jQuery(this).parent().addClass('checked');	//used for the custom checkbox style
            jQuery(this).parents('tr').addClass('selected');
        });

        return false;
    });

    jQuery('#btn-unselect-all').click(function() {
        var parent = jQuery('#users-permissions');
        var ch = parent.find('input[type=checkbox]');

        ch.each(function() {
            jQuery(this).attr('checked', false);
            jQuery(this).parent().removeClass('checked');	//used for the custom checkbox style
            jQuery(this).parents('tr').removeClass('selected');
        });

        return false;
    });

    jQuery('#sl-role').change(function() {
        var id = jQuery(this).val();
        var url = jQuery(this).attr('perm-link') + '/' + id;
        jQuery.get(url, null, function(data) {
            var parent = jQuery('#users-permissions');
            var ch = parent.find('input[type=checkbox]');

            ch.each(function() {
                jQuery(this).attr('checked', false);
                jQuery(this).parent().removeClass('checked');	//used for the custom checkbox style
                jQuery(this).parents('tr').removeClass('selected');

                var val = jQuery(this).val();
                if (in_array(val, data)) {
                    jQuery(this).attr('checked', true);
                    jQuery(this).parent().addClass('checked');	//used for the custom checkbox style
                    jQuery(this).parents('tr').addClass('selected')
                }
            });


        }, 'json');

    });
});